package com.example.myapplication;

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class RetrofitClient {
    // 单例实例（懒加载）
    private static RetrofitClient instance;
    private final UserApiService userApiService;

    // 私有构造：初始化OkHttp和Retrofit
    private RetrofitClient() {
        // 1. 配置OkHttp日志拦截器（打印请求/响应信息，调试用）
        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
        loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); // 打印完整日志

        // 2. 配置OkHttp客户端（超时时间+日志拦截器）
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(loggingInterceptor)
                .connectTimeout(10, java.util.concurrent.TimeUnit.SECONDS) // 连接超时10秒
                .readTimeout(10, java.util.concurrent.TimeUnit.SECONDS)    // 读取超时10秒
                .writeTimeout(10, java.util.concurrent.TimeUnit.SECONDS)   // 写入超时10秒
                .build();

        // 3. 初始化Retrofit（基础URL+Gson解析+OkHttp客户端）
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://reqres.in/") // 接口基础URL（固定）
                .addConverterFactory(GsonConverterFactory.create()) // Gson解析JSON
                .client(okHttpClient)
                .build();

        // 4. 创建API服务实例（用于调用接口）
        userApiService = retrofit.create(UserApiService.class);
    }

    // 单例获取方法（全局唯一）
    public static synchronized RetrofitClient getInstance() {
        if (instance == null) {
            instance = new RetrofitClient();
        }
        return instance;
    }

    // 对外提供API服务（供Repository调用）
    public UserApiService getUserApiService() {
        return userApiService;
    }
}